package com.zhanbo.algorithm;

/**
 * @author zhanbo
 * @version 1.0
 * @describe
 * @date 2020/7/31-11:22
 */
public class Solution15 {

    public static void main(String[] args) {
        System.out.println(NumberOf1(180));
    }

    /**
     * 15. 二进制中 1 的个数
     * 输入一个整数，输出该数二进制表示中 1 的个数。
     *
     * n&(n-1)
     * 该位运算去除 n 的位级表示中最低的那一位。
     * n       : 10110100
     * n-1     : 10110011
     * n&(n-1) : 10110000
     * @param n
     * @return
     */
    public static int NumberOf1(int n) {
        int result = 0;
        while (n != 0) {
            result++;
            n &= (n - 1);
        }
        return result;
    }

    public int NumberOf2(int n) {
        return Integer.bitCount(n);
    }
}
